package com.shidaimanong.demo.network;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

/**
 * 学编程，关注：十代码农
 * 抖音、快手、B站、西瓜视频、今日头条
 */
public class UDPServerDemo {
    public static void main(String[] args) throws IOException {
        int serverPort = 7777;//服务器端口
        /*
         * 接收客户端发送的数据
         */
        // 1.在指定端口创建服务端DatagramSocket
        DatagramSocket datagramSocket = new DatagramSocket(serverPort);
        // 2.创建数据包，用于接收客户端数据
        byte[] data = new byte[1024];// 创建字节数组，指定接收的数据包的大小，默认1024就可以了
        DatagramPacket requestPacket = new DatagramPacket(data, data.length);
        // 3.接收客户端数据
        System.out.println("服务端已启动，等待客户端发送数据");
        datagramSocket.receive(requestPacket);// 此方法在接收到数据之前会一直阻塞
        // 4.读取数据
        String info = new String(data, 0, requestPacket.getLength());
        System.out.println("客户端说：" + info);

        /*
         * 向客户端发送响应
         */
        // 1.定义客户端的地址、端口号、数据
        InetAddress address = requestPacket.getAddress();
        int port = requestPacket.getPort();
        byte[] responseData = "欢迎您!".getBytes();
        // 2.创建数据包
        DatagramPacket responsePacket = new DatagramPacket(responseData, responseData.length, address, port);
        // 3.发送数据给客户端
        datagramSocket.send(responsePacket);
        // 4.关闭连接
        datagramSocket.close();
    }
}
